package main

import (
	"container/list"
	"fmt"
)

func MyPrintf(l * list.List) {
	for e := l.Front(); e != nil; e = e.Next() {
		fmt.Print(e.Value) //输出list的值,01234
	}
    fmt.Println()
}

func main() {
	//创建一个新的list
    l := list.New() 
	for i := 0; i < 5; i++ {
		l.PushBack(i)
	}
    MyPrintf(l)

    //输出首部元素的值,0
	fmt.Println(l.Front().Value) 

    //输出尾部元素的值,4
	fmt.Println(l.Back().Value) 
    
    //插入
	l.InsertAfter(6, l.Front())  //首部元素之后插入一个值为6的元素
    MyPrintf(l)

    //把给定的元素移动到指定元素的前面
	l.MoveBefore(l.Front().Next(), l.Front()) 
    MyPrintf(l)
	
	l.MoveToFront(l.Back()) //将尾部元素移动到首部
    MyPrintf(l)
	
	l2 := list.New()
	l2.PushBackList(l) //将l中元素放在l2的末尾
    MyPrintf(l2)

	fmt.Print(l.Len()) //0
    MyPrintf(l)
}

